home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / clang / gnumake.zip / MAKE.H < prev    next >
C/C++ Source or Header  |  1994-06-07  |  9KB  |  358 lines

  1. /* Miscellaneous global declarations and portability cruft for GNU Make.
  2. Copyright (C) 1988, 89, 90, 91, 92, 93, 94 Free Software Foundation, Inc.
  3. This file is part of GNU Make.
  4.  
  5. GNU Make is free software; you can redistribute it and/or modify
  6. it under the terms of the GNU General Public License as published by
  7. the Free Software Foundation; either version 2, or (at your option)
  8. any later version.
  9.  
  10. GNU Make is distributed in the hope that it will be useful,
  11. but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. GNU General Public License for more details.
  14.  
  15. You should have received a copy of the GNU General Public License
  16. along with GNU Make; see the file COPYING.  If not, write to
  17. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  18.  
  19. /* AIX requires this to be the first thing in the file.  */
  20. #if defined (_AIX) && !defined (__GNUC__)
  21.  #pragma alloca
  22. #endif
  23.  
  24. /* We use <config.h> instead of "config.h" so that a compilation
  25.    using -I. -I$srcdir will use ./config.h rather than $srcdir/config.h
  26.    (which it would do because make.h was found in $srcdir).  */
  27. #include <config.h>
  28. #undef    HAVE_CONFIG_H
  29. #define HAVE_CONFIG_H
  30.  
  31. #ifdef    CRAY
  32. /* This must happen before #include <signal.h> so
  33.    that the declaration therein is changed.  */
  34. #define    signal    bsdsignal
  35. #endif
  36.  
  37. #define _GNU_SOURCE
  38. #include <sys/types.h>
  39. #include <sys/stat.h>
  40. #include <signal.h>
  41. #include <stdio.h>
  42. #include <ctype.h>
  43. #ifdef HAVE_SYS_TIMEB_H
  44. /* SCO 3.2 "devsys 4.2" has a prototype for `ftime' in <time.h> that bombs
  45.    unless <sys/timeb.h> has been included first.  Does every system have a
  46.    <sys/timeb.h>?  If any does not, configure should check for it.  */
  47. #include <sys/timeb.h>
  48. #endif
  49. #include <time.h>
  50. #include <errno.h>
  51.  
  52. #ifndef    errno
  53. extern int errno;
  54. #endif
  55.  
  56. #ifndef    isblank
  57. #define    isblank(c)    ((c) == ' ' || (c) == '\t')
  58. #endif
  59.  
  60. #ifdef    HAVE_UNISTD_H
  61. #include <unistd.h>
  62. /* Ultrix's unistd.h always defines _POSIX_VERSION, but you only get
  63.    POSIX.1 behavior with `cc -YPOSIX', which predefines POSIX itself!  */
  64. #if defined (_POSIX_VERSION) && !defined (ultrix)
  65. #define    POSIX
  66. #endif
  67. #endif
  68.  
  69. /* Some systems define _POSIX_VERSION but are not really POSIX.1.  */
  70. #if (defined (butterfly) || \
  71.      (defined (__mips) && defined (_SYSTYPE_SVR3)) || \
  72.      (defined (sequent) && defined (i386)))
  73. #undef POSIX
  74. #endif
  75.  
  76. #if !defined (POSIX) && defined (_AIX) && defined (_POSIX_SOURCE)
  77. #define POSIX
  78. #endif
  79.  
  80. #if !defined (HAVE_SYS_SIGLIST) && defined (HAVE__SYS_SIGLIST)
  81. #define    sys_siglist    _sys_siglist
  82. #define    HAVE_SYS_SIGLIST    /* Now we have it.  */
  83.  
  84. /* It was declared in <signal.h>, with who knows what type.
  85.    Don't declare it again and risk conflicting.  */
  86. #define    SYS_SIGLIST_DECLARED
  87. #endif
  88.  
  89. #ifdef HAVE_SYS_SIGLIST
  90. #ifndef SYS_SIGLIST_DECLARED
  91. extern char *sys_siglist[];
  92. #endif
  93. #else
  94. #include "signame.h"
  95. #endif
  96.  
  97. /* Some systems do not define NSIG in <signal.h>.  */
  98. #ifndef    NSIG
  99. #ifdef    _NSIG
  100. #define    NSIG    _NSIG
  101. #else
  102. #define    NSIG    32
  103. #endif
  104. #endif
  105.  
  106. #ifndef    RETSIGTYPE
  107. #define    RETSIGTYPE    void
  108. #endif
  109.  
  110. #ifndef    sigmask
  111. #define    sigmask(sig)    (1 << ((sig) - 1))
  112. #endif
  113.  
  114. #ifdef    HAVE_LIMITS_H
  115. #include <limits.h>
  116. #endif
  117. #ifdef    HAVE_SYS_PARAM_H
  118. #include <sys/param.h>
  119. #endif
  120.  
  121. #ifndef    PATH_MAX
  122. #ifndef    POSIX
  123. #define    PATH_MAX    MAXPATHLEN
  124. #endif    /* Not POSIX.  */
  125. #endif    /* No PATH_MAX.  */
  126. #ifndef MAXPATHLEN
  127. #define MAXPATHLEN 1024
  128. #endif    /* No MAXPATHLEN.  */
  129.  
  130. #ifdef    PATH_MAX
  131. #define    GET_PATH_MAX    PATH_MAX
  132. #define    PATH_VAR(var)    char var[PATH_MAX]
  133. #else
  134. #define    NEED_GET_PATH_MAX
  135. extern unsigned int get_path_max ();
  136. #define    GET_PATH_MAX    (get_path_max ())
  137. #define    PATH_VAR(var)    char *var = (char *) alloca (GET_PATH_MAX)
  138. #endif
  139.  
  140. #ifdef    STAT_MACROS_BROKEN
  141. #ifdef    S_ISREG
  142. #undef    S_ISREG
  143. #endif
  144. #ifdef    S_ISDIR
  145. #undef    S_ISDIR
  146. #endif
  147. #endif    /* STAT_MACROS_BROKEN.  */
  148.  
  149. #ifndef    S_ISREG
  150. #define    S_ISREG(mode)    (((mode) & S_IFMT) == S_IFREG)
  151. #endif
  152. #ifndef    S_ISDIR
  153. #define    S_ISDIR(mode)    (((mode) & S_IFMT) == S_IFDIR)
  154. #endif
  155.  
  156.  
  157. #if    (defined (STDC_HEADERS) || defined (__GNU_LIBRARY__))
  158. #include <stdlib.h>
  159. #include <string.h>
  160. #define    ANSI_STRING
  161. #else    /* No standard headers.  */
  162.  
  163. #ifdef HAVE_STRING_H
  164. #include <string.h>
  165. #define    ANSI_STRING
  166. #else
  167. #include <strings.h>
  168. #endif
  169. #ifdef    HAVE_MEMORY_H
  170. #include <memory.h>
  171. #endif
  172.  
  173. extern char *malloc (), *realloc ();
  174. extern void free ();
  175.  
  176. extern void qsort ();
  177. extern void abort (), exit ();
  178.  
  179. #endif    /* Standard headers.  */
  180.  
  181. #ifdef    ANSI_STRING
  182.  
  183. #ifndef    index
  184. #define    index(s, c)    strchr((s), (c))
  185. #endif
  186. #ifndef    rindex
  187. #define    rindex(s, c)    strrchr((s), (c))
  188. #endif
  189.  
  190. #ifndef    bcmp
  191. #define bcmp(s1, s2, n)    memcmp ((s1), (s2), (n))
  192. #endif
  193. #ifndef    bzero
  194. #define bzero(s, n)    memset ((s), 0, (n))
  195. #endif
  196. #ifndef    bcopy
  197. #define bcopy(s, d, n)    memcpy ((d), (s), (n))
  198. #endif
  199.  
  200. #else    /* Not ANSI_STRING.  */
  201.  
  202. #ifndef    bcmp
  203. extern int bcmp ();
  204. #endif
  205. #ifndef    bzero
  206. extern void bzero ();
  207. #endif
  208. #ifndef    bcopy
  209. extern void bcopy ();
  210. #endif
  211.  
  212. #endif    /* ANSI_STRING.  */
  213. #undef    ANSI_STRING
  214.  
  215. /* SCO Xenix has a buggy macro definition in <string.h>.  */
  216. #undef    strerror
  217.  
  218. #ifndef ANSI_STRING
  219. extern char *strerror ();
  220. #endif
  221.  
  222.  
  223. #ifdef    __GNUC__
  224. #undef    alloca
  225. #define    alloca(n)    __builtin_alloca (n)
  226. #else    /* Not GCC.  */
  227. #ifdef    HAVE_ALLOCA_H
  228. #include <alloca.h>
  229. #else    /* Not HAVE_ALLOCA_H.  */
  230. #ifndef    _AIX
  231. extern char *alloca ();
  232. #endif    /* Not AIX.  */
  233. #endif    /* HAVE_ALLOCA_H.  */
  234. #endif    /* GCC.  */
  235.  
  236. #ifndef    iAPX286
  237. #define streq(a, b) \
  238.   ((a) == (b) || \
  239.    (*(a) == *(b) && (*(a) == '\0' || !strcmp ((a) + 1, (b) + 1))))
  240. #else
  241. /* Buggy compiler can't handle this.  */
  242. #define streq(a, b) (strcmp ((a), (b)) == 0)
  243. #endif
  244.  
  245. /* Add to VAR the hashing value of C, one character in a name.  */
  246. #define    HASH(var, c) \
  247.   ((var += (c)), (var = ((var) << 7) + ((var) >> 20)))
  248.  
  249. #if defined(__GNUC__) || defined(ENUM_BITFIELDS)
  250. #define    ENUM_BITFIELD(bits)    :bits
  251. #else
  252. #define    ENUM_BITFIELD(bits)
  253. #endif
  254.  
  255. extern void die ();
  256. extern void message (), fatal (), error ();
  257. extern void makefile_error (), makefile_fatal ();
  258. extern void pfatal_with_name (), perror_with_name ();
  259. extern char *savestring (), *concat ();
  260. extern char *xmalloc (), *xrealloc ();
  261. extern char *find_next_token (), *next_token (), *end_of_token ();
  262. extern void collapse_continuations (), remove_comments ();
  263. extern char *sindex (), *lindex ();
  264. extern int alpha_compare ();
  265. extern void print_spaces ();
  266. extern struct dep *copy_dep_chain ();
  267. extern char *find_char_unquote (), *find_percent ();
  268.  
  269. #ifndef    NO_ARCHIVES
  270. extern int ar_name ();
  271. extern void ar_parse_name ();
  272. extern int ar_touch ();
  273. extern time_t ar_member_date ();
  274. #endif
  275.  
  276. extern void dir_load ();
  277. extern int dir_file_exists_p (), file_exists_p (), file_impossible_p ();
  278. extern void file_impossible ();
  279. extern char *dir_name ();
  280.  
  281. extern void define_default_variables ();
  282. extern void set_default_suffixes (), install_default_suffix_rules ();
  283. extern void install_default_implicit_rules (), count_implicit_rule_limits ();
  284. extern void convert_to_pattern (), create_pattern_rule ();
  285.  
  286. extern void build_vpath_lists (), construct_vpath_list ();
  287. extern int vpath_search ();
  288.  
  289. extern void construct_include_path ();
  290. extern void uniquize_deps ();
  291.  
  292. extern int update_goal_chain ();
  293. extern void notice_finished_file ();
  294.  
  295. extern void user_access (), make_access (), child_access ();
  296.  
  297.  
  298. #ifdef    HAVE_VFORK_H
  299. #include <vfork.h>
  300. #endif
  301.  
  302. #if !defined (__GNU_LIBRARY__) && !defined (POSIX)
  303.  
  304. #ifdef    HAVE_SIGSETMASK
  305. extern int sigsetmask ();
  306. extern int sigblock ();
  307. #endif
  308. extern int kill ();
  309. extern int atoi ();
  310. extern long int atol ();
  311. extern int unlink (), stat (), fstat ();
  312. extern int pipe (), close (), read (), write (), open ();
  313. extern long int lseek ();
  314.  
  315. #endif    /* Not GNU C library or POSIX.  */
  316.  
  317. #ifdef    HAVE_GETCWD
  318. extern char *getcwd ();
  319. #else
  320. extern char *getwd ();
  321. #define    getcwd(buf, len)    getwd (buf)
  322. #endif
  323.  
  324. #if defined(sgi) || defined(__EMX__)
  325. extern char **environ;
  326. #else
  327. #ifndef NSIG
  328. #define NSIG 33
  329. #endif
  330. extern char **_environ;
  331. #define environ _environ
  332. #endif
  333.  
  334. extern char *reading_filename;
  335. extern unsigned int *reading_lineno_ptr;
  336.  
  337. extern int just_print_flag, silent_flag, ignore_errors_flag, keep_going_flag;
  338. extern int debug_flag, print_data_base_flag, question_flag, touch_flag;
  339. extern int env_overrides, no_builtin_rules_flag, print_version_flag;
  340. extern int print_directory_flag, warn_undefined_variables_flag;
  341.  
  342. extern unsigned int job_slots;
  343. extern double max_load_average;
  344.  
  345. extern char *program;
  346. extern char *starting_directory;
  347. extern unsigned int makelevel;
  348. extern char *version_string, *remote_description;
  349.  
  350. extern unsigned int commands_started;
  351.  
  352. extern int handling_fatal_signal;
  353.  
  354.  
  355. #define DEBUGPR(msg) \
  356.   do if (debug_flag) { print_spaces (depth); printf (msg, file->name); \
  357.                fflush (stdout); } while (0)
  358.